iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0
AI & Data

AI初見 從零開始的TensorFlow生活系列 第 28

DAY28 - 二元分類問題 - 寶可夢對戰預測 - 6

  • 分享至 

  • xImage
  •  

大家好,昨天完成了用數值表示屬性資料來訓練的模型,今天要做的就是建立並訓練使用one-hot coding表示屬性資料的模型。

首先取得索引跟預期答案的步驟在昨天做過了,今天就直接進到下一步,將屬性資料用one-hot coding表示,要先取得寶可夢的能力值資料,再透過之前取得的索引產生輸入資料:

pokemon_data_one_hot = np.array(pokemon_df.loc[:, 'HP':])
x_train_one_hot = pokemon_data_one_hot[x_train_index -1].reshape((-1, 54))
x_val_one_hot = pokemon_data_one_hot[x_val_index -1].reshape((-1, 54))
x_test_one_hot = pokemon_data_one_hot[x_test_index -1].reshape((-1, 54))

訓練資料準備好後就要開始建立模型,這個模型的架構跟昨天以數值表示的模型相同,四層全連接層與穿插其中的dropout層,不過輸入的資料不同,使用one-hot coding表示的每隻寶可夢資料有27種,而輸入為兩隻寶可夢資料,因此輸入資料維度為54:

inputs = keras.Input(shape=(54, ))
x = layers.Dense(64, activation='relu')(inputs)
x = layers.Dropout(0.3)(x)
x = layers.Dense(128, activation='relu')(x)
x = layers.Dropout(0.3)(x)
x = layers.Dense(64, activation='relu')(x)
x = layers.Dropout(0.3)(x)
x = layers.Dense(32, activation='relu')(x)
x = layers.Dropout(0.3)(x)
outputs = layers.Dense(1,activation='sigmoid')(x)
model_2 = keras.Model(inputs, outputs, name='model-2')

在設定優化器、損失函數、指數函數、回調函數及訓練模型參數都與昨天的相同:

model_2.compile(keras.optimizers.Adam(), 
               loss=keras.losses.BinaryCrossentropy(), 
               metrics=[keras.metrics.BinaryAccuracy()])
log_dir = os.path.join('lab3-logs', 'model-2')
model_cbk = keras.callbacks.TensorBoard(log_dir=log_dir)
model_mckp = keras.callbacks.ModelCheckpoint(model_dir + '/Best-model-2.h5', 
                                         monitor='val_binary_accuracy',
                                         save_best_only=True,
                                         mode='max')
history_2 = model_2.fit(x_train_one_hot, y_train, 
                    batch_size=64 ,
                    epochs=300, 
                    validation_data=(x_val_one_hot, y_val), 
                    callbacks=[model_cbk, model_mckp])

上一篇
DAY27 - 二元分類問題 - 寶可夢對戰預測 - 5
下一篇
DAY29 - 二元分類問題 - 寶可夢對戰預測 - 7
系列文
AI初見 從零開始的TensorFlow生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言